// { dg-do compile { target c++14 } }
// { dg-additional-options "-fdelete-null-pointer-checks" }

constexpr int *f4(bool b) {
  if (b) {
    return nullptr;
  } else {
    return new int{42}; // { dg-error "call to non-.constexpr." "" { target c++17_down } }
    // { dg-message "allocated here" "" { target c++20 } .-1 }
  }
}
static_assert(f4(true) == nullptr, "");
static_assert(f4(false) == nullptr, ""); // { dg-error "non-constant condition" }
// { dg-error "is not a constant expression because allocated storage has not been deallocated" "" { target c++20 } .-1 }
